The invention relates generally to communication systems and, more specifically, to a communication technique that uses deferred acknowledgment of transmitted messages to increase data throughput in communication links that have a low bandwidth and/or a transmission time delay.
Generally speaking, communication techniques provide a particular level of data throughput at a desired level of data integrity. Typically, a system designer selects an appropriate communication technique for an application by balancing the inherent tradeoffs between the data throughput and the data integrity provided by each of the available communication techniques against system cost objectives. In some applications, such as those involving communications between locally situated devices, like control devices, controllers, and workstations used in process control systems, a dedicated high speed databus (e.g., Ethernet) can be used to provide high levels of data throughput and integrity at a relatively low cost. In other applications, such as those involving communications between local and remotely situated devices, like control devices, controllers, and workstations used in process control systems, practical considerations and limitations compel system designers to use slow communication links, such as modem links, wireless cellular links, etc., that have a relatively low bandwidth or links that have a transmission time delay such as satellite communication links.
Using the above-mentioned slow communication links to accomplish communications between local and remote systems presents several significant problems. For example, slow communication links are typically highly susceptible to electromagnetic interferences that can result in the corruption of data transmitted through the link. Additionally, slow communication links are often associated with a purchased service such as telephone lines, cellular channels, or channel allocation within a satellite transponder bandwidth, which can result in a significant cost per unit of data sent through the link. Thus, communication techniques that xe2x80x9cpackxe2x80x9d the slow communication link with data in both the temporal and frequency dimensions of the link are highly desirable because they tend to increase data throughput and minimize cost per unit of data sent through the link.
For many applications, acceptable levels of data integrity and costs per unit of data sent can be achieved using conventional data encoding and channel modulation techniques within a one-way communication link. For instance, audio and video data is typically encoded prior to transmission using some type of forward error correction and/or convolutional encoding and may be effectively transmitted through the one-way communication link using a spread spectrum modulation technique. A receiving station may then demodulate and decode the transmitted data to generate audio and video signals having an acceptable integrity level. Because the receiving station does not communicate with the transmitting station, data that is severely corrupted or lost may not be recovered by the receiving station, thereby causing spurious errors within the video and audio signals provided to a user. While these spurious errors are undesirable, they do not have a significant impact on overall system performance because they are not easily perceived by the user. In this manner, conventional communication protocols for the transmission of audio and video data can eliminate the communication overhead that is normally associated with two-way communication techniques, which typically use a full-handshake communication protocol, without adversely affecting the qualitative performance of the system.
While the above-described approaches to transmitting data through a one-way communication link provide an acceptable level of data integrity for the reproduction of audio and video information, these approaches do not provide a level of integrity suitable for use in some other types of applications. For example, data associated with a process control system, such as data related to alarm conditions, may be of a highly critical nature because missing or corrupted alarm data may result in injury to personnel and/or damage to material, plant equipment, etc. Furthermore, one-way communication techniques are generally not suitable for use with process control systems because it is highly desirable (and often a requirement) for a local transmitting station to recognize that a remote receiving station is actually receiving and processing the data being sent to it by the transmitting station.
Traditionally, slow data communication links have used a two-way (i.e., full-duplex) communication technique that provides a full-handshake communication protocol requiring each transmitted message (which typically includes a plurality of data bytes) to be acknowledged by the receiving station before a subsequent message is sent. While these conventional full-handshake communication protocols provide an acceptable level of data integrity in, for example, process control systems, and allow the local transmitting station to ascertain whether or not the remote receiving station is receiving and processing the transmitted data, these protocols result in a low data throughput, which is highly disadvantageous where a great magnitude of critical data, such as alarm information on within a process control system is being transmitted.
The use of traditional full-handshake communication protocols is especially problematic when used in conjunction with satellite communication links because the round trip channel transmission time delay of these links may be several hundred milliseconds, which results in a significant amount of idle time for the communication link while the transmitting station waits for an acknowledgment of each message sent. Additionally, sending a large amount of information (e.g., from a local workstation operated by the user to a remotely situated workstation) may be perceptibly or even impractically slow for the user requesting the information. In any case, the inefficient use of the satellite communication link results in an unacceptably high cost per unit of data transmitted.
In addition to utilizing a full-handshake low level communication protocol to accomplish reliable communications via a slow communication link, many conventional process control systems use a full-handshake communication scheme at the application level so that each application message is acknowledged before a subsequent application message is transmitted through the slow communication link. For instance, conventional process control systems typically include alarm services in which alarms and alarm messages are sent to alarm subscribers that acknowledge receipt of the alarms. Thus, if alarm messages are sent through the slow communication link using a full-handshake communication protocol, the alarm will send application level acknowledgments for each of the particular alarm messages received. As a result, alarm messages sent through the slow communication link would actually be acknowledged twice (i.e., once by the low level full-handshake communication protocol and once at the application level). This redundant acknowledgment of alarm messages at the application level can significantly reduce the temporal efficiency of alarm communications through the slow communication
A communication technique is provided to enable the efficient transmission of data through a slow (i.e., low bandwidth and/or time delayed) communication link such as a satellite link, a cellular link, a wide area network, etc. Generally speaking, the communication technique minimizes the idle time of the communication link by using deferred acknowledgment of message bundles to temporally pack the communication link with multiple messages before receiving acknowledgments of any of the messages. More specifically, a message transmission portion of the communication technique sends messages over the communication link in message bundles without requiring express acknowledgments for all of the messages within the message bundles, but instead, requests acknowledgments for only some of the messages within the bundle with the understanding that an acknowledgment for one message implicitly acknowledges messages sent before that message. An acknowledgment processing portion of the communication technique processes acknowledgments received from the other end of the communication link corresponding to the transmitted message bundles and keeps track of which messages remain unacknowledged until the end of a time-out period associated with each message. Additionally, the communication technique consolidates redundant messages to minimize the total number of messages to be sent through the link to a receiving system.
In one embodiment, the transmitting system stores messages to be transmitted in a pending message queue and applies a dynamic window to the pending message queue to define a message bundle to be sent through the slow communication link. The transmitting station requests an acknowledgment for at least one message (e.g., the last message sent) within the bundle, but does not require an acknowledgment for every message within the bundle. Transmitted messages are temporarily stored as unacknowledged messages in a retransmission queue until the transmitted messages are acknowledged or until a time-out period associated with each of the messages has lapsed. When the transmitting station receives a timely acknowledgment in response to a requested acknowledgment, the transmitting station removes all outstanding messages associated with that acknowledgment from the retransmission queue. Each acknowledgment typically operates to acknowledge a plurality of messages. On the other hand, if a timely acknowledgment is not received, the transmitting station resends all messages that have timed out. As a result, the above-described communication technique can greatly reduce the communication link idle time associated with the prior art communication techniques by requesting acknowledgment for message bundles (or portions of bundles) and allowing the acknowledgments of the message bundles to be deferred to a later time while sending additional messages over the link.
A method in accordance with one aspect of the invention enables the transmission of a plurality of messages through a communication link having a round trip transmission time delay. The method establishes a first queue for storing messages to be sent through the communication link and a second queue for storing unacknowledged messages that have been sent into the communication link. The method uses a window having a lower end associated with a position within the first queue and an upper end associated with the position of the lower end and a number of outstanding messages contained in the second queue. The method applies the window to the first queue to define a message bundle containing one or more messages to be sent through the communication link and removes the one or more messages associated with the message bundle from the first queue. In addition, the method sends the one or more messages associated with the message bundle through the communication channel such that at least two of the messages within the message bundle are sent in an amount of time less than the round trip transmission delay, appends the sent one or more messages to the second queue, and acknowledges at least some of the sent one or more messages after the messages in the message bundle have been sent. The method may further include the steps of removing sent messages from the second queue and retransmitting messages that have timed out.
In accordance with another aspect of the invention, a system for sending a plurality of messages through a communication link includes a first data server having a first queue that stores messages to be sent through the communication link and a second queue that stores unacknowledged messages that have been sent into the communication link. The first data server may further include a first routine that sends a group of messages stored in the first queue into the communication link based on a number of messages stored in the second queue, a second routine that appends the sent group of messages to the second queue, and a third routine that processes acknowledgments associated with the sent group of messages to remove acknowledged messages from the second queue.
The system may further include a second data server that is communicatively coupled to the first data server via the communication link. The second data server may include a fourth routine that receives the sent group of messages via the communication link and that sends acknowledgments for one or more of the received sent group of messages to the first data server via the communication link.
In accordance with yet another aspect of the invention, a method of communicating application information in a process control system having a first portion that is communicatively coupled to a second portion via a communication link includes the steps of establishing an application client process within the first portion of the process control system and establishing an application server process within the second portion of the process control system. The method may send a first application message from the application server process to the application client process defining the messages to be sent periodically to the client process. The method may further send periodic application update messages to the client process and a second application message from the application client process to the application server process that enables the application server process to send messages to the application client process. In one embodiment, the application client process and the application server process may be associated with processing alarm information and some of the alarm information may be prioritized prior to transmission of the alarm information.